﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CROSLAND.BL.BE;
using System.Data.Common;
using System.Data;

namespace CROSLAND.DL.DALC.MSSQL
{
    public class UsuarioDALC : BaseDALC, IUsuarioDALC
    {
        //public static UsuarioDALC Instance() {
        //     if (_instance == null)
        //     {
        //         lock (typeof(UsuarioDALC))
        //         {
        //             if (_instance == null)
        //             {
        //                 _instance = new UsuarioDALC();
        //             }
        //         }
        //     }
        //     return _instance;
        // }

        // private UsuarioDALC() { }
        // private static volatile UsuarioDALC _instance = null;
        #region IUsuarioDALC Members

        public List<UsuarioBE> listar()
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXNombre(string pNombre)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXUsuarioSAP(int pUsuarioSAP_id)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXCorreo(string pCorreo)
        {
            throw new NotImplementedException();
        }

        public UsuarioBE leer(int pUsuario_id)
        {
            throw new NotImplementedException();
        }

        public UsuarioBE leer(string pUsuario)
        {
            throw new NotImplementedException();
        }

        public void agregar(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public bool login(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public void eliminar(int pUsuario_id)
        {
            throw new NotImplementedException();
        }

        public bool actualizar(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> listar(UsuarioBE pObjUsuarioWeb)
        {
            throw new NotImplementedException();
        }

        string IUsuarioDALC.login(ref UsuarioWebBE pObjUsuarioWebBE)
        {
            UsuarioWebBE objU = new UsuarioWebBE();
            int cont = 0;
            DbCommand command = dbProvider.GetStoredProcCommand("USPR_LOGIN");
            dbProvider.AddInParameter(command, "ID_USUARIO", DbType.String, pObjUsuarioWebBE.Usuario);
            dbProvider.AddInParameter(command, "PASSWORD", DbType.String, pObjUsuarioWebBE.Clave);

            using (IDataReader dr = dbProvider.ExecuteReader(command))
            {
                while (dr.Read())
                {
                    cont = 1;
                    pObjUsuarioWebBE.PerNr = dr["PERNR"].ToString();
                    pObjUsuarioWebBE.OfVentas = dr["VKBUR"].ToString();
                    pObjUsuarioWebBE.OrgVentas = dr["VKORG"].ToString().Trim();
                    pObjUsuarioWebBE.CanalDist = dr["VTWEG"].ToString();
                    pObjUsuarioWebBE.GrpVend = dr["VKGRP"].ToString();
                    pObjUsuarioWebBE.ClienteEvent = dr["KUNNR"].ToString();
                    pObjUsuarioWebBE.FechaPswd = Convert.ToDateTime(dr["AEDAT"].ToString());
                    pObjUsuarioWebBE.Descripcion = dr["DESCRIPCION"].ToString();
                    pObjUsuarioWebBE.centro = dr["WERKS"].ToString();
                    pObjUsuarioWebBE.almacen = dr["LGORT"].ToString();
                    pObjUsuarioWebBE.sociedad = dr["BUKRS"].ToString();
                    pObjUsuarioWebBE.sector = dr["SPART"].ToString();
                    pObjUsuarioWebBE.Libro = dr["LIBRO"].ToString();
                    pObjUsuarioWebBE.vstel = dr["VSTEL"].ToString(); //Caja
                    pObjUsuarioWebBE.turno = dr["TURNO"].ToString();
                    pObjUsuarioWebBE.boveda = dr["BOVEDA"].ToString();
                }
            }
            if (cont > 0)
            {
                return "";
            }
            else
            {
                return "Error en inicio de sesión.";
            }
        }

        public string actualizar(UsuarioWebBE pObjUsuarioWebBE)
        {
            //string retval = string.Empty;
            //DestConfig dc = new DestConfig();
            //RfcDestination dest;
            //IRfcFunction function = null;
            //try
            //{
            //    dest = DALC.getDestination();
            //    function = dest.Repository.CreateFunction("ZCM_SD_002");
            //    function.SetValue("USERNAME", pObjUsuarioWebBE.Usuario);
            //    function.SetValue("PASSWORD", pObjUsuarioWebBE.Clave);
            //    function.Invoke(dest);
            //    IRfcStructure E_RETVAL = function.GetStructure("E_RETVAL");
            //    retval = E_RETVAL.GetString("TYPE") + "-" + E_RETVAL.GetString("MESSAGE");
            //}
            //catch (Exception ex)
            //{
            //    retval = ex.Message;
            //}
            //return retval;

            return null;
        }

        public List<string> ObtenerOpcionesPorUsuario()
        {
            //IRfcFunction function = null; RfcDestination dest = null;
            ////InMemoryDestinationConfiguration dc = new InMemoryDestinationConfiguration();
            //List<string> lstOpciones = new List<string>();
            //string opc = "";
            //try
            //{
            //    //try
            //    //{
            //    //    RfcDestinationManager.RegisterDestinationConfiguration(dc);
            //    //}
            //    //catch { }
            //    //RfcDestination dest = RfcDestinationManager.GetDestination(this._connId);
            //    dest = DALC.getDestination();
            //    function = dest.Repository.CreateFunction("ZWEB_OPCIONES_USUARIO");
            //    function.Invoke(dest);

            //    IRfcTable TOPCIONES = function.GetTable("PE_TOPCIONES");

            //    foreach (IRfcStructure item in TOPCIONES)
            //    {
            //        opc = "";
            //        opc = item[0].GetString();
            //        lstOpciones.Add(opc);
            //    }
            //}
            //catch (Exception ex)
            //{
            //    throw ex;
            //}
            //finally {
            //    //RfcDestinationManager.UnregisterDestinationConfiguration(dc);
            //}
            //return lstOpciones;
            return null;
        }

        #endregion

        #region IUsuarioDALC Members


        #endregion


    }
}
